package com.guanghua.brick.html.fileupload;

import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.Map;

public interface IFileUpload {
	
	/**
	 * 新上传一个文件,系统中有多个对象和文件关联
	 */
	public Long uploadFile(Long objectId, Long objectType, InputStream is, String fileName) throws Exception;
	
	/**
	 * 新上传一个文件,系统中只有一个对象与文件关联
	 */
	public Long uploadFile(Long objectId, InputStream is, String fileName) throws Exception;
	
	/**
	 * 新上传一个文件
	 */
	public Long uploadFile(InputStream is, String fileName) throws Exception;
	
	/**
	 * 列出相关对象的文件列表,系统中只有一个对象与文件关联
	 */
	public List<Map<String, String>> listUploadFile(Long objectId) throws Exception;
	
	/**
	 * 列出相关对象的文件列表,系统中有多个对象和文件关联
	 */
	public List<Map<String, String>> listUploadFile(Long objectId, Long objectType) throws Exception;
	
	/**
	 * 删除文件，以及数据库中的记录
	 */
	public void removeUploadFile(Long fileId) throws Exception;
	
	/**
	 * 下载文件
	 */
	public String downloadFile(Long fileId, OutputStream os) throws Exception; 
	
}
